
Page({
  /**
   * 页面的初始数据
   */
  data: {
    btnSwitch: false // 保存按钮切换
    , clearBtnSwitch: [true, true, true] // 清空按钮切换
    , name: "" // 收货人
    , phone: "" // 手机号
    , region: ["省份", "城市", "区县 "] // 地区
    , regionIsSelected: false // 记录地区是否选择
    , addrDetails: "" // 详细地址
    , tipsIsShow: true // 消息提示显示
    , token: "" // token
    , emptyaddress: ""
  },

  
  // 地区选择
  bindRegionChange(e) {
    this.setData({
      region: e.detail.value,
      regionIsSelected: true
    })
    // 保存按钮切换
    this.preserverBtnSwitch()
  },

  // 表单填写
  bindKeyInput(e) {
    switch(e.target.id){
      case "name":
        this.setData({
          name: e.detail.value
        })
        // 清空按钮切换
        this.clearBtnSwitchEvent(0)
        break
      case "phone":
        this.setData({
          phone: e.detail.value
        })
        // 正则验证
        if (this.data.phone.length === 11) this.verfiPhone()
        // 清空按钮切换
        this.clearBtnSwitchEvent(1)
        break
      case "addr-details":
        this.setData({
          addrDetails: e.detail.value
        })
        // 清空按钮切换
        this.clearBtnSwitchEvent(2)
        break
    }
    // 保存按钮切换
    this.preserverBtnSwitch()
  },

  // 输入框聚焦事件（清空按钮切换）
  focusEvent(e) {
    switch(e.target.id) {
      case "name":
        this.clearBtnSwitchEvent(0)
        break
      case "phone":
        this.clearBtnSwitchEvent(1)
        break
      case "addr-details":
        this.clearBtnSwitchEvent(2)
        break
    }
  },

  // 输入框失焦事件（清空按钮切换）
  blurEvent(e) {
    switch(e.target.id) {
      case "name":
        this.data.clearBtnSwitch[0] = true
        break
      case "phone":
        this.data.clearBtnSwitch[1] = true
        break
      case "addr-details":
        this.data.clearBtnSwitch[2] = true
        break
    }
    this.setData({
      clearBtnSwitch: this.data.clearBtnSwitch
    })
  },

  // 手机号正则验证（不能以10、11、12开头）
  verfiPhone(){
    let reg = /^1[3-9]\d{9}$/
    let phone = this.data.phone
    console.log( reg.test(phone) )
    return reg.test(phone)
  },

  // 验证表单是否填写完整
  verifForm() {
    if (this.data.name.length && this.data.phone.length && this.data.addrDetails.length && this.data.regionIsSelected) return true
    else return false
  },
  
  // 清空按钮切换
  clearBtnSwitchEvent(idx) {
    switch(idx) {
      case 0:
        if (this.data.name.length) {
          this.data.clearBtnSwitch[0] = false
        } else {
          this.data.clearBtnSwitch[0] = true
        }
        break
      case 1:
        if (this.data.phone.length) {
          this.data.clearBtnSwitch[1] = false
        } else {
          this.data.clearBtnSwitch[1] = true
        }
        break
      case 2:
        if (this.data.addrDetails.length) {
          this.data.clearBtnSwitch[2] = false
        } else {
          this.data.clearBtnSwitch[2] = true
        }
        break
    }
    this.setData({
      clearBtnSwitch: this.data.clearBtnSwitch
    })
  },

  // 清空单个输入框内容
  clearInputValue(e){
    switch(e.target.id) {
      case "name-img":
        this.setData({
          name: ""
        })
        break
      case "phone-img":
        this.setData({
          phone: ""
        })
        break
      case "addr-img":
        this.setData({
          addrDetails: ""
        })
        break
    }
    // 保存按钮切换
    this.preserverBtnSwitch()
  },

  // 保存按钮切换
  preserverBtnSwitch() {
    if ( this.verifForm() && this.verfiPhone() ) {
      this.setData({
        btnSwitch: true
      })
    } else {
      this.setData({
        btnSwitch: false
      })
    }
  },

  // 获取用户token
  getToken() {
    wx.getStorage({
      key: 'token',
      success: res => {
        console.log("用户token为：", res.data)
        this.data.token = res.data
      },
      fail: err => {
        console.log("token获取失败：", err)
      }
    })
  },


  // 地址提交
  submitAddr() {
    wx.request({
      url: 'http://api_devs.wanxikeji.cn/api/userAddressAddModify',
      data: {
        token: this.data.token,
        phone: this.data.phone,
        procince: this.data.region[0],
        city: this.data.region[1],
        area: this.data.region[2],
        name: this.data.name,
        detailed: this.data.addrDetails
      },
      success: res => {
        console.log(res.data)
        this.setData({
          tipsIsShow: false
        })
        setTimeout( () => {
          this.setData({
            tipsIsShow: true
          })
          // 页面跳转
          // console.log(this.data.emptyaddress)
          // 如果是从订单跳转而来 那么点击确定后就跳回订单
          if(this.data.emptyaddress){
            wx.navigateBack({
              delta:1
            })
          }else{
            // 否则跳转到地址列表
            // wx.navigateTo({
            //   url: '../address/address?hasAddress=true',
            // })
            wx.navigateBack();
          }
        }, 300)
      }, 
      fail: err => {
        console.log("地址添加失败", err)
      }
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //如果是从填写订单的添加地址跳转过来的 那么就记录此次行为
    if(options.emptyaddress){
      this.setData({
        emptyaddress:options.emptyaddress
      })
    }
    this.getToken()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})